/*********************************************************************
 * Copyright (C) 2006 Andrew Khan
 * <p>
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * <p>
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * <p>
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ***************************************************************************/

package jxl.biff;

/**
 * Enumeration of built in names
 */
public class BuiltInName {
    /**
     * The name
     */
    private String name;

    /**
     * The value
     */
    private int value;

    /**
     * The list of name
     */
    private static BuiltInName[] builtInNames = new BuiltInName[0];

    /**
     * Constructor
     */
    private BuiltInName(String n, int v) {
        name = n;
        value = v;

        BuiltInName[] oldnames = builtInNames;
        builtInNames = new BuiltInName[oldnames.length + 1];
        System.arraycopy(oldnames, 0, builtInNames, 0, oldnames.length);
        builtInNames[oldnames.length] = this;
    }

    /**
     * Accessor for the name
     *
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * Accessor for the value
     *
     * @return the value
     */
    public int getValue() {
        return value;
    }

    /**
     * Gets the built in name for the value
     */
    public static BuiltInName getBuiltInName(int val) {
        BuiltInName ret = FILTER_DATABASE;
        for (int i = 0; i < builtInNames.length; i++) {
            if (builtInNames[i].getValue() == val) {
                ret = builtInNames[i];
            }
        }
        return ret;
    }

    // The list of built in names
    public static final BuiltInName CONSOLIDATE_AREA =
            new BuiltInName("Consolidate_Area", 0x0);
    public static final BuiltInName AUTO_OPEN =
            new BuiltInName("Auto_Open", 0x1);
    public static final BuiltInName AUTO_CLOSE =
            new BuiltInName("Auto_Open", 0x2);
    public static final BuiltInName EXTRACT =
            new BuiltInName("Extract", 0x3);
    public static final BuiltInName DATABASE =
            new BuiltInName("DatabaseResponse", 0x4);
    public static final BuiltInName CRITERIA =
            new BuiltInName("Criteria", 0x5);
    public static final BuiltInName PRINT_AREA =
            new BuiltInName("Print_Area", 0x6);
    public static final BuiltInName PRINT_TITLES =
            new BuiltInName("Print_Titles", 0x7);
    public static final BuiltInName RECORDER =
            new BuiltInName("Recorder", 0x8);
    public static final BuiltInName DATA_FORM =
            new BuiltInName("Data_Form", 0x9);
    public static final BuiltInName AUTO_ACTIVATE =
            new BuiltInName("Auto_Activate", 0xa);
    public static final BuiltInName AUTO_DEACTIVATE =
            new BuiltInName("Auto_Deactivate", 0xb);
    public static final BuiltInName SHEET_TITLE =
            new BuiltInName("Sheet_Title", 0xb);
    public static final BuiltInName FILTER_DATABASE =
            new BuiltInName("_FilterDatabase", 0xd);
}
